package com.cj.stock.controller;

import com.cj.common.response.Result;
import com.cj.stock.service.SpikeService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;

/**
 * @Author cheng jun
 * @Description: String:set、get，可以存储json字符串；
 *               Hash:hset、hmset、hget、hmget，可以用在购物车场景；
 *               list: leftpush、leftpop可以用在分布式栈数据结构，leftpush、rightpop可以用在分布式队列数据结构，应用场景：
 *               例如社交网站的消息流，最新的消息排在前面；
 *               set:sadd、smembers、spop、sinter(交集)、sunion(并集)、sdiff(差集)、可以用在小程序抽奖、微信朋友圈点赞、收藏、
 *               标签、关注模型场景；
 *               Zset:zadd、zincrby可以用在热点新闻排行,底层是跳表，将链表改造为有序的并且添加索引，使之新增、删除、查询都很快，
 *               但是创建跳表要废一些时间，用时间换空间(当存储元素大于128转为跳表，之前是压缩列表)；
 *               redis持久化方式：rdb(数据放到磁盘，速度快)和aof(存储redis命令,数据存储完整),一般使用混合持久化；
 * @Date 2021/7/19 23:10
 */
@Controller
@RequestMapping(value = "spike")
public class SpikeController {

    @Resource(name = "level1SpikeServiceImpl")
    private SpikeService level1SpikeServiceImpl;

    @Resource(name = "level2SpikeServiceImpl")
    private SpikeService level2SpikeServiceImpl;

    @Resource(name = "level3SpikeServiceImpl")
    private SpikeService level3SpikeServiceImpl;

    @RequestMapping(value = "spikeStock", method = RequestMethod.POST)
    @ResponseBody
    public Result spikeStock() {
        return Result.success(level3SpikeServiceImpl.spikeStock());
    }
}
